#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#define high 30
#define width 50
	int print[high][width];
	int temp[high][width];
void gotoxy(int x,int y)
{
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X=x;
	pos.Y=y;
	SetConsoleCursorPosition(handle,pos);
}

void startup()
{
	int i,j;
	for(i=0;i<high;i++)
	{
		for(j=0;j<width;j++)
		{
			print[i][j]=1;
			temp[i][j]=1;
		}
	}
	
}

void show()
{
	gotoxy(0,0);  //清屏
	//system("cls");
	int i,j;
	for(i=0;i<high;i++)
	{
		for(j=0;j<width;j++)
		{
			if(print[i][j]==1)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
	}

}

void upwhitoutInput()
{
	int num=0;
	int i,j;
	for(i=1;i<(high-1);i++)
	{
		for(j=1;j<(width-1);j++)
		{
			num=print[i-1][j]+print[i-1][j-1]+print[i-1][j+1]+print[i][j-1]+print[i][j+1]+print[i+1][j-1]+print[i+1][j]+print[i+1][j+1];
			if(num==3)
			{
				temp[i][j]=1;
			}
			else if(num==2)
			{
				temp[i][j]=print[i][j];
			}
			else
			{
				temp[i][j]=0;
			}
			
			num=0;
		}
	
	}
	for(i=0;i<high;i++)
	{
		for(j=0;j<width;j++)
		{
			print[i][j]=temp[i][j];
		}
	}
}



int main()
{
	startup();  //数据初始化
	while(1)
	{
		show();  //显示
		upwhitoutInput();  //更新无输入
	}
	return 0;
}